home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / mac / files / dsp / 56000tar.z / 56000tar / 56000 / flts / transiir.asm < prev    next >
Assembly Source File  |  1991-11-26  |  2KB  |  85 lines

  1.     page    132,60,1,1
  2. ;
  3. ; This program, originally available on the Motorola DSP bulletin board,
  4. ; is provided under a DISCLAIMER OF WARRANTY available from Motorola DSP
  5. ; Operation, 6501 William Cannon Drive, West, Austin, Texas  78735-8598.
  6. ;
  7. ;
  8. ;  The cascaded transpose IIR filter has a filter section:
  9. ;
  10. ;
  11. ;      x  --------------bi0---->(+)--------------------> y
  12. ;                  |             ^            |
  13. ;                  |             | w1         |
  14. ;                  |            1/z           |
  15. ;                  |             |            |
  16. ;                  |----bi1---->(+)<---ai1----|
  17. ;                  |             ^            |
  18. ;                  |             | w2         |
  19. ;                  |            1/z           |
  20. ;                  |             |            |
  21. ;                  |----bi2---->(+)<---ai2----|
  22. ;
  23. ;  The filter equations are:
  24. ;      y  = x*bi0 + w1
  25. ;      w1 = x*bi1 + y*ai1 + w2
  26. ;      w2 = x*bi2 + y*a2
  27.  
  28. nsec    equ    2        ;number of sections
  29.  
  30.     org    x:0
  31. w1    dsm    nsec        ;w1
  32. w2    dsm    nsec        ;w2
  33.  
  34.     org    y:0
  35. coef
  36. ;    section 1
  37.     dc    .8/2.0        ;b0
  38.     dc    -.5/2.0        ;b1
  39.     dc    -.6/2.0        ;a1
  40.     dc    .3/2.0        ;b2
  41.     dc    .2/2.0        ;a2
  42. ;    section 2
  43.     dc    -.8/2.0        ;b0
  44.     dc    .5/2.0        ;b1
  45.     dc    -.6/2.0        ;a1
  46.     dc    -.3/2.0        ;b2
  47.     dc    .1/2.0        ;a2
  48.  
  49.  
  50.     org    p:$50
  51. start
  52.     move    #w1,r0
  53.     move    #w2,r1
  54.     move    #coef,r4
  55.  
  56.     move    #nsec-1,m0
  57.     move    #5*nsec-1,m4
  58.     move    #nsec-1,m1
  59.  
  60. ;
  61. ;    filter setup
  62. ;
  63.     ori    #$08,mr                ;set scaling mode
  64.     move        x:(r0),a  y:(r4)+,y0    ;get w1, b0
  65.     asr    a                ;w1/2
  66.  
  67.     do    #20,endloop            ;process 20 samples
  68.  
  69.     move    x:$50,y1            ;get input
  70.  
  71. ;    filter loop
  72.     do    #nsec,_filt            ;do filter sections
  73.     macr    y1,y0,a    x:(r1),b  y:(r4)+,y0    ;x*b0+w1/2, get w2, b1
  74.     asr    b    a,x0            ;w2/2, move y to x0
  75.            mac    y1,y0,b          y:(r4)+,y0    ;x*b1+w2/2, get a1
  76.     macr    x0,y0,b          y:(r4)+,y0    ;+y*a1, get b2
  77.     mpy    y1,y0,b    b,x:(r0)+ y:(r4)+,y0    ;x*b2, save w1, get a2
  78.     macr    x0,y0,b    x:(r0),a  a,y1        ;y*a2, get w1, move y->x
  79.     asr    a    b,x:(r1)+ y:(r4)+,y0    ;w1/2, save w2, get b0
  80. _filt
  81.     move    y1,y:$50            ;save output
  82. endloop
  83.     end
  84.  
  85.